ホームに戻る
目次 :
(この記事は書きかけです)
データバインディングとは
コントロール(リストボックス、データグリッドビューなど)で管理するデータ(データソース)を特定のデータに紐づけること。
バインドされたデータが変更された場合、自動的にコントロールに反映される。
バインドするデータソースの類型
データベース
(書きかけ)
オブジェクト
オブジェクトをデータソースとして指定することができる。指定できる型はコントロールによって異なる。
コンボボックス (ComboBox)
System.Collections.IList インターフェイスを実装するオブジェクト(List など)、または Array をデータソースに使用可能。
C#
// List 型オブジェクトをデータソース(DataSource)に指定
comboBox_Attendance.DataSource = new List<string>(dic_Attendance.Keys);
注意が必要な点
複数のコントロールでデータソースに共通のオブジェクトを用いると、コントロール間で値が連動してしまう。
このためドメイン(値の定義域)が共通でも、それぞれを独立して動作させるなら個別にオブジェクトを作成する必要がある。
(逆に、複数のコントロールで値を連動させたい場合は、共通のオブジェクトをデータソースに設定するとよい。)
// List 型オブジェクトを生成
var ds = new List<string> { "rrr", "sss", "ttt" };
// 一つのオブジェクトを複数のコンボボックスのデータソースに指定
// ⇒ すべてのコンボボックスで値が連動してしまう
// ( comboBox_01 の値(Text)を "rrr" に変更すると、comboBox_02 、comboBox_03 の値も "rrr" となる)
comboBox_01.DataSource = ds;
comboBox_02.DataSource = ds;
comboBox_03.DataSource = ds;
// (初期化子としての)List 型オブジェクトを生成
var ds = new List<string> { "rrr", "sss", "ttt" };
// List 型オブジェクトをコントロールごとに生成
// ⇒ オブジェクトが異なるため、値は連動しない
comboBox_01.DataSource = new List<string>(ds);
comboBox_02.DataSource = new List<string>(ds);
comboBox_03.DataSource = new List<string>(ds);